F[Scala] 2025, 22 ноября 2025 в 11:00
Яндекс


[SCALA]
22 НОЯБРЯ 2025
МОСКВА
Крупнейшая конференция
по Scala и функциональному программированию от Яндекс Вертикалей*
Здесь соберутся практикующие Scala-разработчики и энтузиасты функционального программирования, чтобы обсудить самые актуальные технические темы.
Целых 2 зала с докладами про:
- Метапрограммирование
- ZIO
- Распределённые системы
- Big Data
- на Scala, Clojure и Erlang
Специалисты из Яндекса, Сбера, Т-Банка, Health Samurai, Spendit AG и Зоопт
Василий
ефимовавто.ру
Яндекс Вертикали
Мета-программирование и Scala — 12:00
Обзорный доклад о метапрограммировании и его реализации в Scala.
Всё с самого начала — что такое метапрограммирование, какие задачи оно решает. Основной фокус на макросах в Scala. Также рассмотрим различия между Scala 2 и Scala 3.
Разберем кейсы, когда можно обойтись без макросов — magnolia, shapeless, кодогенерация. И нужны ли макросы в эпоху LLM?
Евгений Веретенников
Яндекс Вертикали
ZIO Mock НЕ МОЖЕТ — SCALAMOCK ПОМОЖЕТ — 13:00
Тесты на ZIO Mock — это боль: загадочные ошибки компиляции, чувство, что библиотека вас не понимает.
У нас было 260 таких тестов в 10+ командах. Библиотека не развивается, отправлена в архив — пришлось искать выход.
Classic scalamock даёт понятные ошибки и удобный синтаксис, но с ZIO Test из коробки не работал. Мы залезли под капот и подружили scalamock с ZIO.
Расскажу, как совместить ленивые и не-ленивые решения, и превратить техническую боль в удобный инструмент для всей компании.
Всеволод Никитин
Т-Банк
Деградация паттернов отказоустойчивости и деградация — 13:00
#Resilience, #Fallback, #Cassandra, #Scala, #Troubleshooting
Олег Нижников и коллеги мощно и быстро писали Т-Банк на Scala: монолит, сервисы, тулзы и сделали полезный паттерн отказоустойчивости — fallback cache. Например, если не удается получить баланс счета (или сотни других атрибутов) — то из persistence на основе Cassandra берется последнее успешно полученное значение. И всё работало.
Но время идет. Олег Нижников ушел в гемблинг, а вместо него понабрали скалистов с улицы по объявлению. Например, Всеволода Никитина.
И fallback'и в легендарном Scala-монолите почему-то начали деградировать.
Никита Глущенко
Spendit AG
Полиморфные λ-функции и их вклад в безопасную деривацию тайпклассов — 14:00
Мы разберём практический кейс использования полиморфных λ-функций в библиотеке Wisteria для деривации тайпклассов. Покажу, как такой подход усиливает безопасность типов и делает API более надёжным и простым по сравнению с Magnolia.
Иван Шукшин
Health Samurai
SQL как структуры данных: генерация запросов в runtime — 14:00
jOOQ генерирует код из схемы БД. Doobie проверяет типы в compile-time. Но что делать, когда структура запроса зависит от runtime данных?
Покажу DSQL — Clojure-библиотеку, где SQL представлен, как композируемые структуры данных. Разберём, как ML-модель для поиска дубликатов пациентов превращается в сложный SQL в runtime.
Увидите примеры полноценной работы с JSONB операторами PostgreSQL, динамические CTE, параметризацию операторов и имён таблиц. Обсудим архитектуру библиотеки и SQL-first подход через нативный парсер PostgreSQL.
Анна Кривицкая
Сбер
Big Data по полочкам: Data Lineage на ZIO и Postgres — 15:45
Как написать собственный Data Lineage для визуализации связей между данными Hadoop кластера и потоками их трансформации на стеке Spark, ZIO, Postgres? В докладе я поделюсь нашим опытом: расскажу, как мы подключали SparkListener, использовали Postgres для обработки графа, находили memory leak в ZIO библиотеке, а также о других вызовах, с которыми столкнулись в процессе.
Алексей Троицкий
Т-Банк
Воркшоп: Tuple, еще tuplee и метапрограммирование — 15:45
Так, 3.7.0, угу, NamedTuple... Опять эти академики какую-то ненужную вещь в язык засунули? Так, это что, еще один способ написать case class, что ли? А под капотом-то там что? В свободном формате лекции-семинара распакуем одну из новых фичей в Scala 3 — именованные кортежи. При этом сделаем отдельный акцент на их использовании в метапрограммировании.
Иван Башкаров
Т-Банк
Как сбрасывать кэш с минимальными усилиями, используя логирование — 16:30
Говорят, в программировании две проблемы: инвалидация кэша и именование переменных. Со второй проблемой нам не доводилось сталкиваться, а вот с первой в свое время пришлось. В докладе я расскажу про замечательную и малоизвестную библиотеку Fetch для композиционного описания вычислений и сборки данных, про её внутреннее устройство, и про то, как нам удалось надёжно и элегантно решить проблему сброса кэша источников данных, используя логирование в библиотеке Fetch.
Андрей Листопадов
Health Samurai
clojure.core.async - deep dive — 17:30
Разбор реализации асинхронной модели в Clojure: устройство каналов, очередей, таймеров и event‑loop; разберём, во что компилируются «виртуальные треды»; рассмотрим архитектурные последствия реализации через систему макросов.
Будет интересно разработчикам языков программирования, рассматривающим добавление в язык поддержки асинхронного исполнения. После доклада вы поймете различия между асинхронностью и параллелизмом, внутренние механизмы clojure.core.async, сможете оценить применимость подхода в своих проектах и получите более глубокое понимание работы асинхронных тредов и каналов сообщений.
Павел Шапкин
Т-Банк
Антон Бровкин
Т-Банк
Арсений Жижелев
Т-Банк
Круглый стол
Спецификация программ: от тестов до теории типов — 17:30
Типы или тесты? Кто кого победит в битве за надёжность кода? Scala-разработчики клянутся в верности типам, но почему-то всё ещё пишут тесты… Может, зря?
За круглым столом — жаркие дебаты: можно ли надежно доставлять бизнес-вэлью, доверившись только типам и компилятору, как Scala 3 помогает писать меньше тестов, не снижая качества кода, и почему даже идеально типизированный код всё-таки падает в проде. Говорим про property-based тесты, абстрактные спецификации, их интерпретации, и как не утонуть в мире, где String всё ещё может быть null (что мы, конечно же, осуждаем).
Даниил Соболь
Зоопт
Биржевые системы и теория относительности — 18:15
Когда мы думаем о биржах, кажется, что всё просто: ордер пришёл — положили в стакан. Но в реальности разработчики сталкиваются с «относительностью» распределённых систем: как определить «одновременно», почему события меняются местами и можно ли вообще избежать распределённости?
На примере создания криптобиржи на эрланге расскажу, с какими сетевыми и архитектурными трудностями мы столкнулись и почему классическая параллелизация не всегда помогает. Также обсудим парадоксы реального времени и как случайности становятся частью бизнес-модели.
Василий Ефимов
Авто.ру
Яндекс Вертикали
Большой зал
Метапрограммирование и Scala
Евгений Веретенников
Яндекс Вертикали
Большой зал
ZIO Mock НЕ МОЖЕТ — SCALAMOCK ПОМОЖЕТ
Всеволод Никитин
Т-Банк
Малый зал
Деградация паттернов отказоустойчивости и деградация
Никита Глущенко
Spendit AG
Большой зал
Полиморфные λ-функции и их вклад в безопасную деривацию тайпклассов
Иван Шукшин
Health Samurai
Малый зал
SQL как структуры данных: генерация запросов в runtime
Анна Кривицкая
Сбер
Большой зал
Big Data по полочкам: Data Lineage на ZIO и Postgres
Иван Башкаров
Т-Банк
Большой зал
Как сбрасывать кэш с минимальными усилиями, используя логирование
Алексей Троицкий
Т-Банк
Малый зал
Воркшоп: Tuple, еще tuplee и метапрограммирование
Даниил Соболь
Зоопт
Большой зал
Биржевые системы и теория относительности
Андрей Листопадов
Health Samurai
Большой зал
clojure.core.async - deep dive
Павел Шапкин
Т-Банк
Антон Бровкин
Т-Банк
Арсений Жижелев
Т-Банк
Малый зал
Круглый стол: Спецификация программ — от тестов до теории типов





